Page({
    data: {
        type: 'time',
        receiver: '',
        name: '',
        allowRemote: false,
        needKyc: false,
        startText: '2025-08-21 21:09:19',
        endText: '2025-08-21 21:09:19',
        loopDaysText: '周日',
        loopStartTimeText: '13:00',
        loopEndTimeText: '14:00',
        loopDaysColumns: [
            { values: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] }
        ],
        showPicker: '',
        tipText: '*限时密码可以在有效期内不限次数使用，密码在生效后的24小时内至少要使用过一次，否则将失效'
    },
    onBack() { wx.navigateBack(); },
    onChangeType(e) {
        const t = e.currentTarget.dataset.type;
        let tip = this.data.tipText;
        if (t === 'time') tip = '*限时密码可以在有效期内不限次数使用，密码在生效后的24小时内至少要使用过一次，否则将失效';
        else if (t === 'once') tip = '*密码有效期为6小时，只能使用一次';
        else if (t === 'forever') tip = '*密码在24小时内至少要使用过一次，否则将失效';
        else if (t === 'loop') tip = '*密码在生效后的24小时内至少要使用过一次，否则将失效';
        else if (t === 'custom') tip = '*可在锁旁边通过手机蓝牙添加，也可以通过网络远程添加。';
        else if (t === 'clear') tip = '*密码有效期为24小时，在锁上输入后，将使之前使用过的密码都失效';
        this.setData({ type: t, tipText: tip });
    },
    computeTip(t) {
        if (t === 'once') return '*单次密码有效期为1小时，只能使用一次';
        if (t === 'forever') return '*接收者可以使用此App开关锁';
        if (t === 'loop') return '*接收者可以在有效期内的固定时间段里，不限次数使用';
        return '*接收者在有效期内可以不限次数使用';
    },
    onInputReceiver(e) { this.setData({ receiver: e.detail.value }); },
    onInputName(e) { this.setData({ name: e.detail.value }); },
    pickStart() { this.setData({ showPicker: 'start' }); },
    pickEnd() { this.setData({ showPicker: 'end' }); },
    pickLoopDays() { this.setData({ showPicker: 'loopDays' }); },
    pickLoopStartTime() { this.setData({ showPicker: 'loopStartTime' }); },
    pickLoopEndTime() { this.setData({ showPicker: 'loopEndTime' }); },
    onLoopDaysConfirm(e) {
        const v = e.detail.value;
        const sel = Array.isArray(v) ? v[0] : v;
        this.setData({ loopDaysText: sel, showPicker: '' });
    },
    onLoopStartTimeConfirm(e) { this.setData({ loopStartTimeText: e.detail, showPicker: '' }); },
    onLoopEndTimeConfirm(e) { this.setData({ loopEndTimeText: e.detail, showPicker: '' }); },
    onStartConfirm(e) { this.setData({ startText: this.formatDatetime(e.detail), showPicker: '' }); },
    onEndConfirm(e) { this.setData({ endText: this.formatDatetime(e.detail), showPicker: '' }); },
    onPickerCancel() { this.setData({ showPicker: '' }); },
    toggleRemote(e) { this.setData({ allowRemote: e.detail }); },
    toggleKyc(e) { this.setData({ needKyc: e.detail }); },
    formatDatetime(ts) { try { const d = new Date(ts); return this.formatDate(ts) + ` ${this.pad(d.getHours())}:${this.pad(d.getMinutes())}:${this.pad(d.getSeconds())}`; } catch (err) { return String(ts); } },
    formatDate(ts) { const d = new Date(ts); return `${d.getFullYear()}-${this.pad(d.getMonth()+1)}-${this.pad(d.getDate())}`; },
    pad(n) { return n < 10 ? `0${n}` : n; },
    onSubmit() {
        wx.navigateTo({ url: `/pages/finger/bind/index` });
    },
    onBatch() { wx.showToast({ title: '批量获取（占位）', icon: 'none' }); }
})